﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using LWJ_Tp_final.Models;


namespace Darsena.Controllers
{
    public class ToqueController : Controller
    {

        private DataContext BaseDeDatos = new DataContext();

        public ActionResult Index()
        {
            var toque = BaseDeDatos.Toques.ToList();
            return View(model: toque);
        }
        [HttpGet]
        public ActionResult Agregar()
        {
            return View();
        }
        [HttpPost]
        public ActionResult Agregar(string codigoEmpresa, string codigoLocalidad, string numeroDarsena, string internoMicro)
        {


            Toque auxToque = new Toque();

            if (int.Parse(numeroDarsena) < 11)
            {
                if (!(string.IsNullOrEmpty(codigoEmpresa) || string.IsNullOrWhiteSpace(codigoEmpresa) ||
                    string.IsNullOrEmpty(codigoLocalidad) || string.IsNullOrWhiteSpace(codigoLocalidad) ||
                    string.IsNullOrEmpty(internoMicro) || string.IsNullOrWhiteSpace(internoMicro) ||
                    string.IsNullOrEmpty(numeroDarsena) || string.IsNullOrWhiteSpace(codigoEmpresa)))
                {

                    Empresa auxEmpresa = new Empresa();
                    Localidad auxLocalidad = new Localidad();

                    foreach (var item in BaseDeDatos.Empresas)
                    {
                        if (item.Codigo == codigoEmpresa)
                        { auxEmpresa = item; }

                    }

                    foreach (var item in BaseDeDatos.Localidades)
                    {
                        if (item.Codigo == codigoLocalidad)
                        { auxLocalidad = item; }
                    }

                    if (!(auxEmpresa == null || auxLocalidad == null))
                    {
                        auxToque.Empresa = auxEmpresa;
                        auxToque.Destino = auxLocalidad;
                        auxToque.FechaHora = DateTime.Now;
                        auxToque.InternoMicro = internoMicro;
                        auxToque.NumeroDarsena = int.Parse(numeroDarsena);
                        BaseDeDatos.Toques.Add(auxToque);
                        BaseDeDatos.SaveChanges();
                        return RedirectToAction("index", "toque");
                    }
                    else
                    {
                        ViewBag.Error = true;
                        return View("agregar", auxToque);
                    }
                }
                else
                {
                    ViewBag.Error = true;
                    return View("agregar", auxToque);
                }
            }
            else
            {
                ViewBag.Error = true;
                return View("agregar", auxToque);
            }
        }
        [HttpGet]
        public ActionResult Modificar()
        {
            return View();
        }
        [HttpPost]
        public ActionResult Modificar(int id, string codigoEmpresa, string codigoLocalidad, string numeroDarsena, string internoMicro)
        {

            Toque auxtoque = BaseDeDatos.Toques.Find(id);

            if (!(string.IsNullOrEmpty(codigoEmpresa) || string.IsNullOrWhiteSpace(codigoEmpresa) ||
                string.IsNullOrEmpty(codigoLocalidad) || string.IsNullOrWhiteSpace(codigoLocalidad) ||
                string.IsNullOrEmpty(internoMicro) || string.IsNullOrWhiteSpace(internoMicro) ||
                string.IsNullOrEmpty(numeroDarsena) || string.IsNullOrWhiteSpace(codigoEmpresa)))
            {

                Empresa auxEmpresa = new Empresa();
                Localidad auxLocalidad = new Localidad();

                foreach (var item in BaseDeDatos.Empresas)
                {
                    if (item.Codigo ==codigoEmpresa)
                    {
                        auxEmpresa = item;
                    }
                }
                foreach (var item in BaseDeDatos.Localidades)
                {
                    if (item.Codigo == codigoLocalidad)
                    {
                        auxLocalidad = item;
                    }
                }

                auxtoque.Empresa = auxEmpresa;
                auxtoque.Destino = auxLocalidad;
                auxtoque.NumeroDarsena = int.Parse(numeroDarsena);
                auxtoque.InternoMicro = internoMicro;
                BaseDeDatos.SaveChanges();
                return RedirectToAction("index", "toque");
            }
            else
            {
                ViewBag.Error = true;
                return View("Modificar",model: auxtoque);
            }
        }


        public ActionResult Borrar(int id)
        {
            BaseDeDatos.Toques.Remove(BaseDeDatos.Toques.Find(id));
            BaseDeDatos.SaveChanges();
            return RedirectToAction("index", "Toque");
        }


    }
}
